Remove timestamp fallbacks for non-batched publishing#141
Conversation
Signed-off-by: Michael Johansen <michael.johansen@emerson.com>
There was a problem hiding this comment.
Pull request overview
This PR removes client-side timestamp fallback behavior for non-batched publish_measurement calls so that the client passes through a caller-provided timestamp (or omits it when not provided), delegating any defaulting logic to the Datastore Server.
Changes:
- Removed waveform-
t0and “now” timestamp fallback logic from gRPC conversion, replacing it with a simple “convert if provided” helper. - Updated
DataStoreClient.publish_measurementto set the request timestamp directly from the optional caller-provided timestamp (no fallback). - Updated unit tests to expect a default/empty
PrecisionTimestampwhen no timestamp is provided.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
tests/unit/data/test_publish_measurement.py |
Updates unit tests to align expectations with “no client-side timestamp fallback” behavior. |
src/ni/datastore/data/_grpc_conversion.py |
Removes fallback timestamp selection logic and adds a simple optional timestamp conversion helper. |
src/ni/datastore/data/_data_store_client.py |
Updates non-batched publish path to stop applying fallback timestamps client-side. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| timestamp=convert_measurement_timestamp_to_protobuf(timestamp), | ||
| ) |
| request = cast(PublishMeasurementRequest, args[0]) # The PublishMeasurementRequest object | ||
| assert measurement_id == "response_id" | ||
| assert request.timestamp == hightime_datetime_to_protobuf(timestamp) | ||
| assert request.timestamp == PrecisionTimestamp() |
| args, __ = mocked_data_store_service_client.publish_measurement.call_args | ||
| request = cast(PublishMeasurementRequest, args[0]) | ||
| assert request.timestamp == hightime_datetime_to_protobuf(now) | ||
| assert request.timestamp == PrecisionTimestamp() |
| args, __ = mocked_data_store_service_client.publish_measurement.call_args | ||
| request = cast(PublishMeasurementRequest, args[0]) | ||
| assert request.timestamp == hightime_datetime_to_protobuf(now) | ||
| assert request.timestamp == PrecisionTimestamp() |
|
We discussed that we'll wait until the corresponding LabVIEW changes are approved to submit this PR, so we ensure that if that one doesn't make it, we're not making consistency worse by submitting this PR. |
| @@ -37,9 +37,9 @@ | |||
| from ni_grpc_extensions.channelpool import GrpcChannelPool | |||
There was a problem hiding this comment.
Leaving this comment to ensure we don't submit this PR until the associated LabVIEW changes have been approved.
What does this Pull Request accomplish?
This PR removes the timestamp fallbacks from non-batched publish measurement.
Before this change, if
timestampwas not provided, we would fall back to one of these two values:The desire is to conceptually move this logic into the Datastore Server. The implementation may not look exactly the same, but the goal on the client side is just to pass through the provided timestamp without altering it.
Why should this Pull Request be merged?
AB#3926275
We want to remove the timestamp fallbacks until we decide how to handle it on the server side.
What testing has been done?
I updated two unit tests to check for a default
PrecisionTimestampif notimestampis provided.All unit tests and acceptance tests pass.